.TH std::ws 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::ws \- std::ws

.SH Synopsis
   Defined in header <istream>
   template< class CharT, class Traits >
   std::basic_istream<CharT, Traits>& ws( std::basic_istream<CharT, Traits>& is );

   Discards leading whitespace from an input stream.

   Behaves as an UnformattedInputFunction, except that is.gcount() is not modified.
   After constructing and checking the sentry object, extracts characters from the
   stream and discards them until any one of the following conditions occurs:

     * end of file condition occurs in the input sequence (in which case the function
       calls setstate(eofbit) but does not set failbit; this does not apply if the
       eofbit is already set on is prior to the call to ws, in which case the
       construction of the sentry object would set failbit).
     * the next available character c in the input sequence is not whitespace as
       determined by std::isspace(c, is.getloc()). The non-whitespace character is not
       extracted.

   This is an input-only I/O manipulator, it may be called with an expression such as
   in >> std::ws for any in of type std::basic_istream.

.SH Parameters

   is - reference to input stream

.SH Return value

   is (reference to the stream after extraction of consecutive whitespace).

.SH Notes

   If eofbit is set on the stream prior to the call, the construction of the sentry
   object will set failbit.

.SH Example


// Run this code

 #include <iomanip>
 #include <iostream>
 #include <istream>
 #include <sstream>
 #include <string>

 int main()
 {
     for (const char* str : {"     #1 test", "\\t #2 test", "#3 test"})
     {
         std::string line;
         std::getline(std::istringstream{str}, line);
         std::cout << "getline returns:\\t" << std::quoted(line) << '\\n';

         std::istringstream iss{str};
         std::getline(iss >> std::ws, line);
         std::cout << "ws + getline returns:\\t" << std::quoted(line) << '\\n';
     }
 }

.SH Output:

 getline returns:        "     #1 test"
 ws + getline returns:   "#1 test"
 getline returns:        "        #2 test"
 ws + getline returns:   "#2 test"
 getline returns:        "#3 test"
 ws + getline returns:   "#3 test"

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

     DR    Applied to            Behavior as published              Correct behavior
                      calling std::ws might not construct the
   LWG 415 C++98      sentry                                      required to construct
                      object (insonsistent with other input       the sentry object
                      functions)

.SH See also

   ignore extracts and discards characters until the given character is found
          \fI(public member function of std::basic_istream<CharT,Traits>)\fP
